/*
 * =====================================================================================
 *
 *       Filename:  cpu.h
 *
 *    Description:
 *
 *        Version:  1.0
 *        Created:  2025/03/17 16时12分15秒
 *       Revision:  none
 *       Compiler:  gcc
 *
 *         Author:  zhuzonghui(puchuchen@outlook.com) (),
 *   Organization:
 * =====================================================================================
 */
#include <fuquOS/type.h>

#define MAX_VENDOR_LEN 13 // CPU 制造商最多12个字符+'\0'
#define MAX_MODEL_LEN 49  // CPU 型号最多48个字符+'\0'
#define MAX_FEATURES 32   // 最多存储32个特征标志

typedef struct
{
    char vendor[13];   // CPU厂商
    char model[49];    // CPU型号
    u32 frequency;     // 频率 (MHz)
    u32 core_count;    // 物理核心数
    u32 thread_count;  // 线程数（逻辑处理器数）
    u32 feature_count; // 特性数量
    u8 features[32];   // 特性列表
} cpu_info_t;


void cpuid(u32 eax, u32 ecx, u32 *a, u32 *b, u32 *c, u32 *d);
void cpu_init();
cpu_info_t *get_cpu_info();